Skip to content

在 Windows 上安裝與升級 PowerShell 7

TLDR

  • Windows PowerShell (5.1) 與 PowerShell 7 是完全不同的產品,前者已停止開發,後者為跨平台且持續更新的現代版本。
  • 兩者可並存於同一系統,Windows PowerShell 執行檔為 powershell.exe,PowerShell 7 為 pwsh.exe
  • 建議在需要跨平台腳本、解決 UTF-8 編碼亂碼,或使用現代開發工具(如 Copilot CLI)時安裝 PowerShell 7。
  • 使用 WinGet 可快速安裝與升級 PowerShell 7。
  • PowerShell 7 預設不包含離線說明文件,需透過 Update-Help 指令手動下載。

Windows PowerShell 與 PowerShell 7 的差異

在需要使用現代開發工具或處理跨平台腳本時,會遇到 Windows PowerShell 5.1 功能受限的問題。兩者主要差異如下:

  • 底層架構:Windows PowerShell 基於封閉的 .NET Framework,僅限 Windows;PowerShell 7 基於開源的 .NET,支援 Windows、Linux、macOS 與 Docker。
  • 生命週期:Windows PowerShell 已停止新功能開發;PowerShell 7 持續更新並提供 LTS 版本。
  • 編碼處理:PowerShell 7 統一採用 UTF-8(不含 BOM),解決了 Windows PowerShell 處理中文字元或與 Git 互動時常見的亂碼問題。
  • 執行檔隔離:兩者可並存,互不干擾。

安裝與管理指南

當開發環境需要 PowerShell 6 以上版本時,可透過 WinGet 進行管理,系統會自動設定環境變數。

  • 搜尋可用版本
    powershell
    winget search --id Microsoft.PowerShell
  • 安裝最新穩定版
    powershell
    winget install --id Microsoft.PowerShell --source winget
  • 一鍵升級至最新版
    powershell
    winget upgrade --id Microsoft.PowerShell
  • 解除安裝
    powershell
    winget uninstall --id Microsoft.PowerShell

Get-Help 說明文件機制

當執行 Get-Help 指令卻無法顯示範例或詳細參數說明時,通常是因為本機尚未下載說明文件。

解決方式

  • 連線查詢:使用 -Online 參數(如 Get-Help Get-Process -Online),直接開啟瀏覽器查看官方網頁版說明。
  • 下載離線檔:以系統管理員身分執行以下指令:
    powershell
    Update-Help -UICulture zh-tw, en-US -Force -ErrorAction SilentlyContinue

參數說明

  • -UICulture zh-tw, en-US:指定下載語言,包含 en-US 作為備援。
  • -Force:強制重新下載說明檔。
  • -ErrorAction SilentlyContinue:忽略部分模組因無線上說明檔而產生的錯誤訊息。

什麼情況下需要額外安裝新版?

若遇到以下情境,建議安裝 PowerShell 7:

  • AI 腳本基準:AI 產生的腳本通常以 PowerShell 6+ 為基準,在 5.1 版本執行容易失敗。
  • 編碼問題:需處理無 BOM 的 UTF-8 檔案,避免中文字元在 5.1 版本中被誤判為 ANSI 導致亂碼。
  • 工具版本要求:如 Copilot CLI 等現代工具明確要求 PowerShell 6+。
  • 跨平台需求:需編寫可在 Windows、Linux、macOS 通用的腳本。

異動歷程

    • 初版文件建立。